package com.jy.wms.dao;

import com.jy.wms.common.base.BaseDao;
import com.jy.wms.pojo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
   * @ClassName: WmsPurchaseOrderMapper.java
   * @Description: TODO(这里用一句话描述这个类的作用)
   * @Author lh
   * @Date Fri Sep 15 17:36:51 GMT+08:00 2017
   */
   public interface WmsPurchaseOrderMapper extends BaseDao<WmsPurchaseOrder> {

   /**
    * 插入一条记录
    * @param entity 实体对象
    * @param database 数据库名称
    * @return int
    */
    public Integer baseInsert(@Param("WmsPurchaseOrder") WmsPurchaseOrder entity, @Param("database") String database);

   /**
    * 插入一条记录（匹配有值的字段）
    * @param entity 实体对象
    * @return int
    */
   public Integer baseInsertSelective(@Param("WmsPurchaseOrder") WmsPurchaseOrder entity);

   /**
    * 删除（根据主键ID删除）
    * @param id 主键
    * @param database 数据库名称
    * @return int
    */
   public Integer baseDeleteByPrimaryKey(@Param("id") String id, @Param("database") String database);

   /**
    * 删除（根据ID 批量删除）
    * @param idList 主键ID列表
    * @return int
    */
    public Integer baseDeleteBathPrimaryKeys(@Param("list") List<String> idList, @Param("scr") String scr);


    /**
    * 分页查询
    * @param entity 实体
    * @return List<WmsPurchaseOrder>
    */
    public List<WmsPurchaseOrder>  baseSelectPage(@Param("WmsPurchaseOrder") WmsPurchaseOrder entity,@Param("hzid") String hzid,@Param("gysid")String gysid,@Param("ckid")String ckid);

    /**
    * 查询（根据主键ID查询）
    * @param id 主键ID
    * @return User
    */
    public WmsPurchaseOrder  baseSelectByPrimaryKey(@Param("id") String id);

   /**
    * 查询（根据ID 批量查询）
    * @param idList 主键ID列表
    * @return list
    */
    public Integer baseSelectBathPrimaryKeys(@Param("list") List<WmsPurchaseOrder> idList);

   /**
    *修改 （匹配有值的字段）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKeySelective(@Param("WmsPurchaseOrder") WmsPurchaseOrder entity);

   /**
    *修改（根据主键ID修改）
    * @param entity 主键ID列表
    * @param database 数据库名称
    * @return int
    */
    public Integer baseUpdateByPrimaryKey(@Param("WmsPurchaseOrder") WmsPurchaseOrder entity, @Param("database") String database);

       /**
        * 通过货主id查询对应的所有供应商
        * @param hzid
        * @return
        */
   public List<WmsOwnerSupplier> getWosByHzid(@Param("hzid") String hzid,@Param("ckid")String ckid);

       /**
        * 从收发类别中获取类型为“入库”的单据类型
        * @return
        */
   public List<WmsOwnerOrdertype>getPoLx(@Param("hzid") String hzid,@Param("ckid") String ckid,@Param("ddlx") String ddlx);

       /**
        *查询当前货主下的货品
        * @param
        * @return
        */
  public  List<WmsPurchaseOrder>getGoods(@Param("gysid") String gysid,@Param("ckid")String ckid,@Param("goodsBh")String goodsBh);
       /**
        * 根据包装id查找包装明细
        * @param bzid 包装id
        * @return
        */
  public List<WmsPackingDetailed> packDetailList(@Param("bzid") String bzid,@Param("ckid") String ckid);

    /**
     * 查找订单中是否有相同的订单号
     * @return
     */
    public Integer getCountByBh(@Param("hzid")String hzid,@Param("bh")String bh);
       /**
        * 查找订单中此种货品的数量（ 查找订单中此种货品的数量）
        * @return
        */
  public Integer getCountByHp(String hpid, String cgddid);

       /**
        * 通过仓库id 查找仓库对象
        * @param id 仓库id
        * @return
        */
     public WmsWarehouse getWmsWarehouse(@Param("id") String id);

       /**
        * 根据采购订单查询订单明细
        * @param sscgdid 采购订单id
        * @return
        */
    public List<WmsPurchaseOrderDetailed>wmsPurchaseOrderDetailList(@Param("sscgdid") String sscgdid);

       /**
        *审核时修改审核状态
        * @return
        */
    public Integer updateShzt(@Param("list") List<String> idList, @Param("shr") String shr);

       /**
        * 手动标记收货完成
         * @return
        */
    public Integer updateZt(@Param("list") List<String> idList, @Param("czr") String czr);

       /**
        * 导出采购订单
        * @param idList
        * @return
        */
    public List<WmsPurchaseOrder>getOutPutList(@Param("list") List<String> idList, @Param("Map") Map map/*@Param("list") List<String> idList,@Param("WmsPurchaseOrder")WmsPurchaseOrder wpo,*/ );

    /**
     * 删除采购订单
     */

    public Integer deleteOrder(@Param("id") String id);

    /**
     * 供应商id 查询供应商
     */
    public WmsOwnerSupplier getSupplier(@Param("gysid")String gysid,@Param("ckid")String ckid);

    /**
     * 修改订单明细的状态（标记收货完成时）
     * ddidList 订单id的集合
     */
    public  int updateMxZt(@Param("list") List<String> ddidList);

    /**
     * 查询订单集合
     * @param idList
     * @return
     */
    public  List<WmsPurchaseOrder> getOrderList(@Param("list") List<String> idList);

    /**
     * 通过供应商编号获取供应对象
     * @param  gysid  供应商id
     * @return
     */
    public WmsOwnerSupplier getSupplierByGysid(@Param("gysid")String gysid,@Param("ckid")String ckid);

    /**
     * 通过货品编号获取货品对象
     * @param hpid 货品id
     * @param ckid 仓库id
     * @return
     */
   public  WmsPurchaseOrder getGoodsByHpid(@Param("hpid")String hpid,@Param("ckid")String ckid);

    /**
     * 根据采购订单id 查询预期到货通知单
     * @param ccddid 采购订单id
     * @param ckid 仓库id
     * @return 预期到货通知单集合
     */
   public List<WmsEstimatedArrivalOrder> getWmsEstimatedArrivalOrders(@Param("ccddid") String ccddid,@Param("ckid")String ckid);
}
